package com.tensai.study.java.newconcept.typereactiveprogram.reactor.flux;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import reactor.core.publisher.Flux;

/**
 * doOnXxx方法测试
 *
 * @author Tensai
 */
@Slf4j
public class DoOnSomethingTest {

    @Test
    public void test() {
        Flux.just(5, 6, 8)
            // 获取下一个参数触发
            .doOnNext(e -> System.out.println("--next:" + e))
            // 完成时触发
            .doOnComplete(() -> System.out.println("--complete"))
            // 关注时触发
            .doOnSubscribe(it -> System.out.println("--onSubscribe:" + it))
            // 取消时触发
            .doOnCancel(() -> System.out.println("--cancel"))
            // TODO 这他妈时干啥的
            .doOnDiscard(String.class, s -> System.out.println("--onDiscard:" + s))
            // 每个信号附加行为 每次操作都触发（doOnXxx）
            .doOnEach(s -> System.out.println("--singal:" + s.getType()))
            .subscribe(System.out::println)
        ;

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

    }
}
